#include <openssl/md5.h>
#include <memory.h>
#include "iBe.h"


StringHash System::binaryHash(const char * const _str, 
			      const unsigned int &_len)
{
  unsigned char md5[MD5_DIGEST_LENGTH];
  StringHash hash;

  MD5_CTX ctx;

  MD5_Init(&ctx);
  MD5_Update(&ctx, _str, _len);
  MD5_Final(md5, &ctx);
  
  memcpy(hash.md5, md5, MD5_DIGEST_LENGTH);
  
  return hash;
}
			      


StringHash System::hash(const char* const _str)
{
  return binaryHash(_str, strlen(_str));
}

StringHash System::hash(const String &_str)
{
  return binaryHash(_str.c_str(), _str.length());
}

